Skip to main content
Version: 1.0.4

Outbound ACH Debit

The 'Outbound ACH Debit' API enables to process the ACH debit transaction initiated by the receiver to pull the amount from sender's bank account

Method: POST

{{URL}}/rpc/paymentv2

Example

Request Parameters
ParameterDescription
method
Mandatory
String
API method that is being called to initiate ACH pull transaction through ledger service
Constant value – "ledger.ach.transfer"
id
Mandatory
String
Unique ID of API request
Sample value – "1"
params
Mandatory
Object
payload
Mandatory
Object
channel
Mandatory
String
Payment channel through which the transaction is processed
Constant value – "ACH"
transactionType
Mandatory
String
Type of transaction
Constant value – "ACH_PULL"
reference
Mandatory
String
Unique reference ID of the transaction
Sample value – "R90987895"
transactionDateTime
Optional
String
Date and time the transaction is initiated (YYYY-MM-DD HH:MM:SS)
Sample value – "2021-01-19 06:20:25"
reason
Optional
String
Purpose of the transaction
Sample value – "Settlement"
transactionAmount
Mandatory
Object
amount
Mandatory
String
Amount of the transaction
Sample value – "200"
currency
Mandatory
String
Type of currency used
Sample value – "USD"
debtor
Mandatory
Object
userType
Optional
Enum
Type of debtor
Valid values: ACCOUNT_HOLDER, LEGAL_REP and INDIVIDUAL
Sample value – "INDIVIDUAL"
identificationType
Optional
String
Type of identification
Constant value – "SSN"
identification
Optional
String
Value of identification
Sample value – "89900200002"
firstName
Mandatory
String
First name of debtor
Sample value – "nashe"
middleName
Optional
String
Middle name of debtor
Sample value – ""
lastName
Optional
String
Last name of debtor
Sample value – ""
debtorPostalAddress
Optional
Object
addressType
Optional
String
Address type
Sample value – "HOUSE"
addressLine1
Optional
String
First address line
Sample value – "3745 SW anamaker RD"
addressLine2
Optional
String
Second address line
Sample value – "Suite C"
city
Optional
String
City
Sample value – "Topeka"
state
Optional
String
State
Sample value – "KS"
zipCode
Optional
String
ZIP code
Sample value – "66610"
countryCode
Optional
String
Country code
Sample value – "840"
debtorContact
Optional
Object
primaryEmail
Optional
String
Primary email
Sample value – "n.sundar@netsys-inc.com"
primaryPhone
Optional
String
Primary phone number
Sample value – "7850010001"
debtorAccount
Mandatory
Object
identificationType
Mandatory
String
Type of ID
Sample value – "ACCOUNT_NUMBER"
identificationType2
Optional
Enum
Type of account: SAVINGS/CHECKING
Sample value – "SAVINGS"
identification
Mandatory
String
Debtor account number
Sample value – "200000000852262"
institution
Mandatory
Object
name
Optional
String
Bank name
Sample value – "FINWISE BANK"
identificationType
Mandatory
String
ID type
Sample value – "ABA"
identification
Mandatory
String
Bank ID
Sample value – "011110646"
creditor
Mandatory
Object
userType
Optional
Enum
Type of creditor
Valid values: ACCOUNT_HOLDER, LEGAL_REP, INDIVIDUAL, etc.
Sample Value : "INDIVIDUAL"
identificationType
Optional
String
Type of identification
Sample Value : "SSN"
identification
Optional
String
Value of identification
Sample Value : "89900200002"
firstName
Mandatory
String
First name of creditor
Sample Value : "Andy"
middleName
Optional
String
Middle name of creditor
Sample Value : "Lee"
lastName
Optional
String
Last name of creditor
Sample Value : "Prescott"
creditorPostalAddress
Optional
Object
addressType
Optional
String
Address type
Sample Value : "HOUSE"
addressLine1
Optional
String
First address line
Sample Value : "3745SWWanamakerRD"
addressLine2
Optional
String
Second address line
Sample Value : "SuiteC"
city
Optional
String
City
Sample Value : "Topeka"
state
Optional
String
State
Sample Value : "KS"
zipCode
Optional
String
ZIP code
Sample Value : "66610"
countryCode
Optional
String
Country code
Sample Value : "840"
creditorContact
Optional
Object
primaryEmail
Optional
String
Primary email of creditor
Sample Value : "aprescott@demobank.com"
primaryPhone
Optional
String
Primary phone number of creditor
Sample Value : "7850010001"
creditorAccount
Mandatory
Object
identificationType
Mandatory
String
Type of account identification
Sample Value : "ACCOUNT_NUMBER"
identificationType2
Optional
Enum
Type of account: SAVINGS/CHECKING
Sample Value : "SAVINGS"
identification
Mandatory
String
Account number of creditor
Sample Value : "200686362505215"
institution
Mandatory
Object
name
Optional
String
Bank name
Sample Value : "FINWISE BANK"
identificationType
Mandatory
String
Type of bank ID
Sample Value : "ABA"
identification
Mandatory
String
Bank ID
Sample Value : "101115399"
api
Mandatory
Object
credential

Mandatory
String
Basic (space) [("<Username>:<apiKey>") as Base64 encoded value] to be provided
Sample Value: "Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx"
signature

Mandatory
String
Sign the request payload (params.payload) using private key.
Sample Value: "MEQCIAbpxHpdOyBEVlmxPYv7m4Z1OvWJJYw7g7u3GE3T9nmvAiBjKHckSvb1M6O4t7FeWsn2z9Y3dMeYn3HyX/k28ek/Dw=="
apiKey

Optional
String
API key is provided at the time of device registration.
Sample Value : "f59b0cce958e45a780eaeb3aec9ecd01"

curl --location '{{URL}}/rpc/paymentv2' \
--header 'Content-Type: application/json' \
--data-raw '"method":"ledger.ach.transfer","id":"1","params":{"payload":{"channel":"ACH","transactionType":"ACH_PULL","_transactionDateTime":"2021-01-19 06:20:25","reference":"REF1000001006","reason":"Settlement","transactionAmount":{"amount":"500","currency":"USD"},"debtor":{"userType":"INDIVIDUAL","identification":"777777712345678","identificationType":"CHECKING","firstName":"Andy","middleName":"Lee","lastName":"Prescott"},"debtorPostalAddress":{"addressType":"HOUSE","addressLine1":"3745SWWanamakerRD","addressLine2":"SuiteC","city":"Topeka","state":"KS","zipCode":"66610","countryCode":"840"},"debtorContact":{"primaryEmail":"aprescott@demobank.com","primaryPhone":"7850010001"},"debtorAccount":{"identificationType2":"SAVINGS","identification":"89900200002","identificationType":"ACCOUNT_NUMBER","institution":{"name":"FINWISE BANK","identification":"011102638","identificationType":"ABA"}},"creditor":{"userType":"INDIVIDUAL","identification":"89900200002","identificationType":"SSN","firstName":"Andy","_middleName":"Lee","lastName":"Prescott"},"creditorPostalAddress":{"addressType":"HOUSE","addressLine1":"3745SWWanamakerRD","addressLine2":"SuiteC","city":"Topeka","state":"KS","zipCode":"66610","countryCode":"840"},"creditorContact":{"primaryEmail":"aprescott@demobank.com","primaryPhone":"7850010001"},"creditorAccount":{"identification":"200686362505215","identificationType":"ACCOUNT_NUMBER","identificationType2":"SAVINGS","institution":{"name":"FINWISE BANK","identification":"101115399","identificationType":"ABA"}}},"api":{"credential":"Basic cmFqYXJlcEBuZXR4ZC5jb206MDM1Nzg2MmYxYTk4NDc3OGE0ZDU4NGE2YzBjYTMyNzM=","signature":"MEYCIQCY0HxPlIGYG98sz+/l2mZY7oXUcUxZj6aWONfUUk1kGwIhANrOkk3w4nciALAL52XUO+2+JoiXWXnRjuKBp2OBlhgD","apiKey":"0357862f1a984778a4d584a6c0ca3273"}}'


Body



"method": "ledger.ach.transfer",
"id": "1",
"params": {
"payload": {
"channel": "ACH",
"transactionType": "ACH_PULL",
"_transactionDateTime": "2021-01-19 06:20:25",
"reference": "REF1000001006",
"reason": "Settlement",
"transactionAmount": {
"amount": "500",
"currency": "USD"
},
"debtor": {
"userType": "INDIVIDUAL",
"identification": "777777712345678",
"identificationType": "CHECKING",
"firstName": "Andy",
"middleName": "Lee",
"lastName": "Prescott"
},
"debtorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "3745SWWanamakerRD",
"addressLine2": "SuiteC",
"city": "Topeka",
"state": "KS",
"zipCode": "66610",
"countryCode": "840"
},
"debtorContact": {
"primaryEmail": "aprescott@demobank.com",
"primaryPhone": "7850010001"
},
"debtorAccount": {
"identificationType2": "SAVINGS",
"identification": "89900200002",
"identificationType": "ACCOUNT_NUMBER",
"institution": {
"name": "FINWISE BANK",
"identification": "011102638",
"identificationType": "ABA"
}
},
"creditor": {
"userType": "INDIVIDUAL",
"identification": "89900200002",
"identificationType": "SSN",
"firstName": "Andy",
"_middleName": "Lee",
"lastName": "Prescott"
},
"creditorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "3745SWWanamakerRD",
"addressLine2": "SuiteC",
"city": "Topeka",
"state": "KS",
"zipCode": "66610",
"countryCode": "840"
},
"creditorContact": {
"primaryEmail": "aprescott@demobank.com",
"primaryPhone": "7850010001"
},
"creditorAccount": {
"identification": "200686362505215",
"identificationType": "ACCOUNT_NUMBER",
"identificationType2": "SAVINGS",
"institution": {
"name": "FINWISE BANK",
"identification": "101115399",
"identificationType": "ABA"
}
}
},
"api": {
"credential": "{{Credential}}",
"signature": "{{signature}}",
"apiKey": "{{ApiKey}}"
}
}



Response: 200

Response Parameters
ParameterDescription
idString
Response ID echoed from the request
Sample Value : "1"
resultObject
Container for response data
apiObject
Contains API-specific transaction metadata
typeString
Type of API response
Sample Value : "ACH_PULL_ACK"
referenceString
Reference ID for the transaction
Sample Value : "REF1000001006"
dateTimeString
Date and time of transaction acknowledgement
Sample Value : "2025-06-04 13:09:03"
accountObject
Contains account information
accountIdString
Account identifier
Sample Value : "200686362505215"
balanceCentsNumber
Available balance in cents after the transaction.
Sample Value : 115384
holdBalanceCentsNumber
Amount on hold in cents
Sample Value : 100
statusString
Status of the account
Valid values:
- ACTIVE: The account is open for all transactions.
- DORMANT: Only inbound credit transactions are allowed. The account will automatically transition to Active when an inbound credit transaction occurs.
- SUSPENDED: No transactions are allowed in this state. The account must be manually changed to Active, typically due to compliance issues. It can also be reactivated based on a court order.
- CLOSED: The account is permanently closed, and no transactions are allowed. Once an account is in this state, it cannot be reactivated.
Sample Value : "ACTIVE"
transactionNumberString
Unique transaction number assigned
Sample Value : "QA00000003108005"
transactionStatusString
Status of the transaction
Sample Value : "PENDING"
transactionAmountCentsNumber
Transaction amount in cents
Sample Value : 500
originalRequestBase64String
Original request in Base64 encoded format
processIdString
Unique process ID for end-to-end tracking
Sample Value : "PL25060403017005"
headerObject
Header metadata for validation and logging
referenceString
Reference ID from header
Sample Value : "REF1000001006"
signature

Mandatory
String
Sign the request payload (params.payload) using private key.
Sample Value: "MEYCIQC29ySJAaiLEPY8+jfTR12p7w6fag2LEzd9ei/4M0UZtgIhAMV3i2XuHWzZ3FkIonlMxnBLBAu9QPiA5c75OkOX0P+O"
apiKey

Optional
String
API key is provided at the time of device registration.
Sample Value : "f59b0cce958e45a780eaeb3aec9ecd01"

{
"id": "1",
"result": {
"api": {
"type": "ACH_PULL_ACK",
"reference": "REF1000001006",
"dateTime": "2025-06-04 13:09:03"
},
"account": {
"accountId": "200686362505215",
"balanceCents": 115384,
"holdBalanceCents": 100,
"status": "ACTIVE"
},
"transactionNumber": "QA00000003108005",
"transactionStatus": "PENDING",
"transactionAmountCents": 500,
"originalRequestBase64": "eyJjaGFubmVsIjoiQUNIIiwidHJhbnNhY3Rpb25UeXBlIjoiQUNIX1BVTEwiLCJwcm9kdWN0IjoiUEwiLCJwcm9ncmFtIjoiMTAwMDAwMDAwMDQ1MDAxIiwicmVmZXJlbmNlIjoiUkVGMTAwMDAwMTAwNiIsInJlYXNvbiI6IlNldHRsZW1lbnQiLCJ0cmFuc2FjdGlvbkFtb3VudCI6eyJhbW91bnQiOiI1MDAiLCJjdXJyZW5jeSI6IlVTRCJ9LCJkZWJ0b3IiOnsidXNlclR5cGUiOiJJTkRJVklEVUFMIiwiaWRlbnRpZmljYXRpb24iOiI3Nzc3Nzc3MTIzNDU2NzgiLCJpZGVudGlmaWNhdGlvblR5cGUiOiJDSEVDS0lORyIsImZpcnN0TmFtZSI6IkFuZHkiLCJtaWRkbGVOYW1lIjoiTGVlIiwibGFzdE5hbWUiOiJQcmVzY290dCJ9LCJkZWJ0b3JQb3N0YWxBZGRyZXNzIjp7ImFkZHJlc3NUeXBlIjoiSE9VU0UiLCJhZGRyZXNzTGluZTEiOiIzNzQ1U1dXYW5hbWFrZXJSRCIsImFkZHJlc3NMaW5lMiI6IlN1aXRlQyIsImNpdHkiOiJUb3Bla2EiLCJzdGF0ZSI6IktTIiwiemlwQ29kZSI6IjY2NjEwIiwiY291bnRyeUNvZGUiOiI4NDAifSwiZGVidG9yQ29udGFjdCI6eyJwcmltYXJ5RW1haWwiOiJhcHJlc2NvdHRAZGVtb2JhbmsuY29tIiwicHJpbWFyeVBob25lIjoiNzg1MDAxMDAwMSJ9LCJkZWJ0b3JBY2NvdW50Ijp7ImlkZW50aWZpY2F0aW9uIjoiODk5MDAyMDAwMDIiLCJpZGVudGlmaWNhdGlvblR5cGUiOiJBQ0NPVU5UX05VTUJFUiIsImlkZW50aWZpY2F0aW9uVHlwZTIiOiJTQVZJTkdTIiwiaW5zdGl0dXRpb24iOnsibmFtZSI6IkZJTldJU0UgQkFOSyIsImlkZW50aWZpY2F0aW9uIjoiMDExMTAyNjM4IiwiaWRlbnRpZmljYXRpb25UeXBlIjoiQUJBIn19LCJjcmVkaXRvciI6eyJ1c2VyVHlwZSI6IklORElWSURVQUwiLCJpZGVudGlmaWNhdGlvbiI6Ijg5OTAwMjAwMDAyIiwiaWRlbnRpZmljYXRpb25UeXBlIjoiU1NOIiwiZmlyc3ROYW1lIjoiQW5keSIsImxhc3ROYW1lIjoiUHJlc2NvdHQifSwiY3JlZGl0b3JQb3N0YWxBZGRyZXNzIjp7ImFkZHJlc3NUeXBlIjoiSE9VU0UiLCJhZGRyZXNzTGluZTEiOiIzNzQ1U1dXYW5hbWFrZXJSRCIsImFkZHJlc3NMaW5lMiI6IlN1aXRlQyIsImNpdHkiOiJUb3Bla2EiLCJzdGF0ZSI6IktTIiwiemlwQ29kZSI6IjY2NjEwIiwiY291bnRyeUNvZGUiOiI4NDAifSwiY3JlZGl0b3JDb250YWN0Ijp7InByaW1hcnlFbWFpbCI6ImFwcmVzY290dEBkZW1vYmFuay5jb20iLCJwcmltYXJ5UGhvbmUiOiI3ODUwMDEwMDAxIn0sImNyZWRpdG9yQWNjb3VudCI6eyJpZGVudGlmaWNhdGlvbiI6IjIwMDY4NjM2MjUwNTIxNSIsImlkZW50aWZpY2F0aW9uVHlwZSI6IkFDQ09VTlRfTlVNQkVSIiwiaWRlbnRpZmljYXRpb25UeXBlMiI6IlNBVklOR1MiLCJpbnN0aXR1dGlvbiI6eyJuYW1lIjoiRklOV0lTRSBCQU5LIiwiaWRlbnRpZmljYXRpb24iOiIxMDExMTUzOTkiLCJpZGVudGlmaWNhdGlvblR5cGUiOiJBQkEifX19",
"processId": "PL25060403017005"
},
"header": {
"reference": "REF1000001006",
"apiKey": "0357862f1a984778a4d584a6c0ca3273",
"signature": "MEYCIQC29ySJAaiLEPY8+jfTR12p7w6fag2LEzd9ei/4M0UZtgIhAMV3i2XuHWzZ3FkIonlMxnBLBAu9QPiA5c75OkOX0P+O"
}
}


Error Codes

Error Codes
Error CodeError Message
A107DUPLICATE_REFERENCE
A112INVALID_AMOUNT
A113INVALID_CHANNEL
A114CUSTOMER_NOT_FOUND
A116INVALID_API_KEY
A118TRANSACTION_REFERENCE_EMPTY
A122PROGRAM NOT FOUND
A123CREDITOR_ACCOUNT_TYPE_EMPTY
A126TRANSACTION_TYPE_EMPTY
A147TRANSACTION NOT FOUND
A157INVALID ACCOUNT NUMBER
A161DEBTOR ACCOUNT NOT FOUND
A166DEBTOR_ACCOUNT_TYPE_EMPTY
A167DEBTOR_ACCOUNT_ID_EMPTY
A169ACCOUNT NUMBER DOES NOT MATCH WITH API KEY
A172IDENTIFICATIONTYPE2 SHOULD BE EITHER SAVINGS OR CHECKING
A183PAYLOAD EMPTY
A184INVALID ORIGINAL TRANSACTION STATUS
A185TRANSACTION ALREADY REVERSED
A186CREDITOR FIRSTNAME REQUIRED
A187CREDITOR POSTAL ADDRESS ADDRESSLINE1 REQUIRED
A188CREDITOR POSTAL ADDRESS ZIPCODE REQUIRED
A189CREDITOR POSTAL ADDRESS COUNTRYCODE REQUIRED
A190CREDITOR CONTACT EITHER PRIMARYEMAIL OR PRIMARYPHONE REQUIRED
A191DEBTOR FIRSTNAME REQUIRED
A192DEBTOR POSTAL ADDRESS ADDRESSLINE1 REQUIRED
A193DEBTOR POSTAL ADDRESS ZIPCODE REQUIRED
A194DEBTOR POSTAL ADDRESS COUNTRYCODE REQUIRED
A195DEBTOR CONTACT EITHER PRIMARYEMAIL OR PRIMARYPHONE REQUIRED
A196DEBTOR USERTYPE REQUIRED
A197DEBTOR IDENTIFICATION REQUIRED
A198DEBTOR IDENTIFICATIONTYPE REQUIRED
A199CREDITOR USERTYPE REQUIRED
A200CREDITOR IDENTIFICATION REQUIRED
A201CREDITOR IDENTIFICATIONTYPE REQUIRED
A205INVALID_PROGRAM
A206INVALID_PRODUCT
A207PRODUCT_PROGRAM_CHANNEL SETTING NOT FOUND
A208ID EMPTY
A209APIKEY NOT FOUND
1111CREDITOR ACCOUNT NOT FOUND
1113CREDITOR NOT FOUND
1116TRANSACTION AMOUNT NOT FOUND
1117TRANSACTION CURRENCY NOT FOUND
1122CREDITOR ACCOUNT IDENTIFICATION TYPE NOT FOUND
1123CREDITOR ACCOUNT IDENTIFICATION TYPE2 NOT FOUND
1126DEBTOR ACCOUNT IDENTIFICATION TYPE NOT FOUND
1127PRODUCT NOT FOUND
1128PROGRAM NOT FOUND
1129CHANNEL NOT FOUND
1130TRANSACTION TYPE NOT FOUND
1131INVALID API KEY
2053INVALID_ACCOUNT_NUMBER
5019INSUFFICIENT BALANCE
9999INTERNAL ERROR
1001CARD HOLDER ALREADY EXISTS
1002INVALID CARDHOLDER FIRST NAME
1003INVALID CARDHOLDER PHONE NUMBER
1004INVALID CARDHOLDER ADDRESS LINE 1
1005INVALID CARDHOLDER CITY
1006INVALID CARDHOLDER STATE
UNAUTHORIZEDAccess Denied
INVALID_SIGNATUREInvalid Signature
NOT_FOUND_USER_DEVICEUser device not found
BAD_CREDENTIALInvalid Credential